#include <iostream>


//
// Clases
//

class cArrInt {
	// Static const, significa q todos los objetos la ven y no la pueden cambiar
	// por eso la inicializo
	static const int SIZE = 10;
	int m_array[SIZE];
	const int m_var;
	// Static que inicializo fuera de la clase o en el constructor o en ambos, y lo
	// ven todos los objetos de esta clase
	static int m_var2;	
	// Static Function que puede llamar unicamente static members
	static void print_static() { std::cout << m_var2 << std::endl;}

public:
	cArrInt(int var=0) : m_var(var) {
		for(int i=0; i<SIZE; i++)
			m_array[i] = m_var;
		m_var2 = 2;
	}
	~cArrInt() {}
	void print() const {
		for(int i=0; i<SIZE; i++)
			std::cout << m_array[i] << std::endl;
		print_static();
	}
};

int cArrInt::m_var2 = 8;


//
// Main
//

int main(void) {
	cArrInt a(876);

	a.print();

	return 0;
}
